package com.jy.wms.dao;

import com.jy.wms.common.base.BaseDao;
import com.jy.wms.pojo.WmsPackingDetailed;
import com.jy.wms.pojo.WmsShipmentOrder;
import com.jy.wms.pojo.WmsShipmentOrderDetailed;
import com.jy.wms.pojo.WmsSplit;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
   * @ClassName: WmsSplitMapper.java
   * @Description: TODO(这里用一句话描述这个类的作用)
   * @Author Liyi
   * @Date Tue Oct 24 15:29:46 CST 2017
   */
   public interface WmsSplitMapper extends BaseDao<WmsSplit> {

    /**
     * 根据SOid glid查询是否已在退货信息保存
     * @param soid
     * @return
     */
    public Integer getCountBySoidAndGlid(@Param("soid") String soid, @Param("glid") String glid);

    /**
     * 分页查询 SO
     * @param entity 实体
     * @return List<WmsShipmentOrder>
     */
    public List<WmsShipmentOrder> getSoList(@Param("WmsShipmentOrder") WmsShipmentOrder entity, @Param("ckid") String ckid, @Param("hzid") String hzid);


    /**
    * 插入一条记录
    * @param entity 实体对象
    * @return int
    */
    public Integer baseInsert(@Param("WmsSplit") WmsSplit entity);

   /**
    * 插入一条记录（匹配有值的字段）
    * @param entity 实体对象
    * @return int
    */
   public Integer baseInsertSelective(@Param("WmsSplit") WmsSplit entity);

   /**
    * 删除（根据主键ID删除）
    * @param id 主键
    * @return int
    */
   public Integer baseDeleteByPrimaryKey(@Param("id") String id);

   /**
    * 删除（根据所属发运订单ID删除所属明细）
    * @param ssfyddids 所属发运订单ID
    * @return int
    */
   public Integer baseDeleteBySsfyddid(@Param("list") List<String> ssfyddids);

   /**
    * 删除（根据ID 批量删除）
    * @param idList 主键ID列表
    * @return int
    */
    public Integer baseDeleteBathPrimaryKeys(@Param("list") List<String> idList);

    /**
     *修改发运订单 (全部发运/部分发运) 退单重报
     * @param id
     * @return
     */
    public Integer setFytd(@Param("id") String id);

    /**
     * 退单按钮直接改成 退单 状态
     * @param id
     * @return
     */
    public Integer setTd(@Param("id") String id);

    /**
     *修改发运订单(初始) 退单
     * @param id
     * @return
     */
    public Integer setCstd(@Param("id") String id);

    /**
    * 分页查询
    * @param entity 实体
    * @return List<WmsSplit>
    */
    public List<Map<String,Object>> baseSelectPage(@Param("WmsSplit") WmsSplit entity);

    /**
    * 查询（根据主键ID查询）
    * @param id 主键ID
    * @return User
    */
    public WmsSplit baseSelectByPrimaryKey(@Param("id") String id);

   /**
    * 查询（根据ID 批量查询）
    * @param idList 主键ID列表
    * @return list
    */
    public Integer baseSelectBathPrimaryKeys(@Param("list") List<WmsSplit> idList);

   /**
    *修改 （匹配有值的字段）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKeySelective(@Param("WmsSplit") WmsSplit entity);

   /**
    *修改（根据主键ID修改）
    * @param entity 主键ID列表
    * @return int
    */
    public Integer baseUpdateByPrimaryKey(@Param("WmsSplit") WmsSplit entity);

   /**
    * 查询发运订单对应的所有发运明细
    * @param ssfyddid 所属发运订单ID
    * @return List<WmsSplit>
    */
   public List<WmsShipmentOrderDetailed> baseSelectBySsfyddid(@Param("ssfyddid") String ssfyddid);

   /**
    * 查询包装明细（根据包装ID查询
    * @param ssbzid 所属包装ID
    * @return List<WmsSplit>
    */
   public List<WmsPackingDetailed> selectPackingDetailedByBzid(@Param("ssbzid") String ssbzid);

       /**
        * 查询发运订单内未拆单 已审核 的订单
        * @param list
        * @return
        */
        public List<String> getWcdCount(@Param("list") List<String> list);

       /**
        * 查询发运订单内 已拆单 或 未审核 的订单
        * @param list
        * @return
        */
        public List<String> getYcdCount(@Param("list") List<String> list);

       /**
        * 拆单表内查询包含所属发运订单ID的数量
        * @param list
        * @return
        */
       public List<String> getCdCount(@Param("list") List<String> list);

       /**
        * 拆单后修改发运订单 拆单状态为1
        * @param ids 发运订单IDS
        * @return
        */
       public Integer updateShipmentOrderCdzt(@Param("list") List<String> ids);

       /**
        * 拆单后修改发运订单 拆单状态为0
        * @param ids 发运订单IDS
        * @return
        */
       public Integer updateShipmentOrderQxCdzt(@Param("list") List<String> ids);

       /**
        * 发运订单表内查询包含 审核状态 0
        * @param list
        * @return
        */
       public Integer getWshCount(@Param("list") List<String> list);
}
